home *** CD-ROM | disk | FTP | other *** search
- {
- I went ahead and wrote a fade_HorizontalExpand using Kai
- Rohrbacher's fade_VerticalExpand as a guide. The fade was too slow, so I
- reduced the detailed inner loop and had the clean-up complete the effect.
- }
- PROCEDURE HorizontalExpand(pa, time: WORD); { JH }
- { in: pa = page, which contents will be made visible }
- { time = time (in milliseconds) for this action (approx.) }
- {out: - }
- {rem: the contents of page "pa" has been copied to page visualPage }
- {jh "n" was (YMAX+1)*(YMAX+1) DIV 8 = 5000}
- CONST n = 2000; {number of executions of the delay loop}
- VAR ClockTicks:^LONGINT;
- counter: WORD;
- t: LONGINT;
- temp, middle, step, akku: REAL;
- lines, x: INTEGER;
-
- PROCEDURE CopyLine(from, dest: WORD);
- { in: from = to duplicate line from page pa}
- { dest = endline in page visualPage differ}
- VAR p1:POINTER;
- BEGIN
- p1 := GetImage(from+StartVirtualX,StartVirtualY,
- from+StartVirtualX,StartVirtualY+YMAX,pa);
- PutImage(dest+StartVirtualX,StartVirtualY,p1, 1-Page); {jh visualPage}
- FreeImageMem(p1);
- END; {CopyLine}
-
- BEGIN
- ClockTicks := Ptr(Seg0040,$6C);
- t := ClockTicks^;
- counter := 0;
- temp := 0.0182*time/n;
-
- middle := XMAX/2;
- {jh FOR lines := 1 TO ((XMAX+1) SHR 1)-1 DO =159}
- FOR lines := 1 TO 99 DO
- BEGIN
- step := XMAX/(lines SHL 1);
- akku := step;
- FOR x := 0 TO lines-1 DO
- BEGIN {jh The SHR 1 handling is for only two Copylines at a time}
- CopyLine( TRUNC(middle-akku),(XMAX+1) SHR 1 -x-1);
- CopyLine( TRUNC(middle+akku),(XMAX+1) SHR 1 +x);
- akku := akku + step;
- INC(counter);
- WHILE (ClockTicks^ < (t+counter*temp)) DO BEGIN END;
- END;
- END;
-
- {Cleanup:}
- lines := XMAX SHR 1;
- FOR x := 0 TO XMAX SHR 1 DO
- BEGIN
- CopyLine( lines-x,lines-x);
- CopyLine( lines+x,lines+x);
- INC(counter);
- WHILE (ClockTicks^ < (t+counter*temp)) DO BEGIN END;
- END;
- IF Odd(XMAX)
- THEN CopyLine(XMAX,XMAX);
- END; {HorizontalExpand}